#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2e5+7;
// const int maxn = 2+7;
int n, q, a, b;
int x[maxn];
int st[maxn<<2];
inline int left(int p){return p*2;}
inline int right(int p){return p*2+1;}
void build(int p, int l, int r) {
  if(l==r) st[p]=l;
  else {
    build(left(p), l, l+r>>1);
    build(right(p), (l+r>>1)+1, r);
    int p1=st[left(p)], p2=st[right(p)];
    st[p]=(x[p1]<=x[p2])?p1:p2;
  }
}
int rmq(int p, int l, int r, int i, int j) {
  if(i>r || j<l) return -1;
  if(l>=i && r<=j) return st[p];
  int p1 = rmq(left(p), l, l+r>>1, i, j);
  int p2 = rmq(right(p), (l+r>>1)+1, r, i, j);
  if(p1==-1)return p2;
  if(p2==-1)return p1;
  return (x[p1]<=x[p2])?p1:p2;
  // return min(x[p1], x[p2]);
}

int main() {
  // freopen("test_input.txt", "r", stdin);
  ios_base::sync_with_stdio(0);
  cin.tie(0);cout.tie(0);
  cin>>n>>q;
  for(int i=0; i<n; ++i)cin>>x[i];
  build(1, 0, n-1);
  // for(int i=1; i<8; ++i)cout<<x[st[i]]<<' ';
  for(int i=0; i<q; ++i) {
    cin>>a>>b;
    cout<<x[rmq(1, 0, n-1, a-1, b-1)]<<'\n';
  }
  return 0;
}
